home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Grab Bag
/
Shareware Grab Bag.iso
/
090
/
pctj8509.arc
/
RAPIDSCR.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1986-09-13
|
3KB
|
80 lines
{$C-,U-}
program RapidScreen;
TYPE StuffInHeap = ^PutInHeap; {Pointer to screens}
PutInHeap = Record {Record of images}
ScreenImage : Array[1..4096 ] of Char;
End;
VAR Ch : Char;
ColorPage : Array[ 1..4096 ] of Char Absolute $B800 : $0000;
{This program uses the color screen location. Change the
above value to $B000 : $0000 for the monochrome screen.}
Screen: Array[ 0..3] of StuffInHeap;
J : Integer;
Procedure WaitForKey;
BEGIN
REPEAT Read (Kbd,Ch) UNTIL Not KeyPressed;
END;
Procedure Message; {Asks for keypress for next screen or quit}
BEGIN
GoToXY(10, 25);
Write
('Press Enter to stop; any other key steps through screens.');
WaitForKey;
END;
BEGIN {main program}
TextColor(0); TextBackGround(7);
ClrScr;
Write('Screen 0 contains only this line.'); {Write screen 0}
New(Screen[0]); {Allocate screen in heapspace}
Move(ColorPage, Screen[0]^.ScreenImage, 4096); {Store screen }
TextColor(4); TextBackGround(2); {Attributes for screen 1}
For J := 4 to 15 Do
BEGIN
GoToXY(4, J); {Write screen 1}
Write(Chr(186),'Screen 1 is this material.',Chr(186));
END;
New(Screen[1]); {Allocate another screen}
Move(ColorPage, Screen[1]^.ScreenImage, 4096); {Store screen }
Textcolor(12); TextBackGround(4);
For J := 12 to 22 Do
BEGIN
GoToXY(18, J);
Write
(Chr(186),'We add this to get screen number 2.',Chr(186));
END;
New(Screen[2]);
Move(ColorPage, Screen[2]^.ScreenImage, 4096);
TextColor(14); TextBackGround(0);
For J := 15 to 20 Do
BEGIN
GoToXY(32, J);
Write(Chr(186),'And now all of this is screen 3.',Chr(186));
END;
New(Screen[3]);
{Here we bring screen 3 in from heap:}
Move(ColorPage, Screen[3]^.ScreenImage, 4096);
REPEAT
Message; {User presses any key to get next screen}
If Ch <> ^M Then
BEGIN {Bring screen 0 from heap: }
Move(Screen[0]^.ScreenImage,ColorPage,4096);
Message;
END;
If Ch <> ^M Then
BEGIN {Now bring screen 1 from heap: }
Move(Screen[1]^.ScreenImage, ColorPage, 4096);
Message;
END;
If Ch <> ^M Then
BEGIN {Now bring screen 2 from heap: }
Move(Screen[2]^.ScreenImage, ColorPage, 4096);
Message;
END;
If Ch <> ^M Then {Now bring screen 3 from heap: }
Move(Screen[3]^.ScreenImage, ColorPage, 4096);
UNTIL Ch = ^M; ClrScr;
END.